package com.ys.controller.api.business;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ys.entity.business.TpBoutiqueSiteFile;
import com.ys.service.business.TpBoutiqueSiteFileService;
import com.ys.service.sys.CommonApiService;
import com.ys.vo.LayuiTableVoJA;
import com.ys.vo.R;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
import java.util.function.Predicate;

/**
 * 精品库附件
 */
@Controller
@RequestMapping("/api/inter/tpBoutiqueSiteFile")
public class ApiInterTpBoutiqueSiteFileController {
    private static final Logger logger = LoggerFactory.getLogger(ApiInterTpBoutiqueSiteFileController.class);

    @Autowired
    private CommonApiService<TpBoutiqueSiteFile> commonApiService;
    @Autowired
    private TpBoutiqueSiteFileService tpBoutiqueSiteFileService;



    /**
     * 查询A+信息，根据精品库站点信息表Id
     */
    @RequestMapping("/searchByBoutiqueSiteDetailId")
    @ResponseBody
    public LayuiTableVoJA searchByBoutiqueSiteDetailId(Model model, HttpServletRequest request, HttpServletResponse response,
                                                       String id
    ){
        try {
            List<Map<String,Object>> resList =  new TpBoutiqueSiteFile()
                    .setBoutiqueSiteDetailId(Long.parseLong(id))
                    .queryMap();
            LayuiTableVoJA tableVoJA = new LayuiTableVoJA();
            JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(resList));
            tableVoJA.setData(jsonArray);
            tableVoJA.setMsg("成功");
            tableVoJA.setCode(0);
            return tableVoJA;
        }catch (Exception e){
            logger.error("查询出错：",e.getMessage(),e);
            LayuiTableVoJA tableVoJA = new LayuiTableVoJA();
            tableVoJA.setCode(1);
            tableVoJA.setMsg("查询出错，请稍后重试！");
            return tableVoJA;
        }
    }

    /**
     * 批量新增、修改
     */
    @RequestMapping("/toAddOrUpdateByList")
    @ResponseBody
    public R toAddOrUpdateByList(HttpServletRequest request, @RequestParam Map<String, Object> params){
        try {
            logger.info("精品库附件新增、修改传参："+params);
            String errorMsg = checkParams(params);
            if(errorMsg!=null && !"".equals(errorMsg)){
                return R.error(errorMsg);
            }
            return tpBoutiqueSiteFileService.addOrUpdateByList(params);
        } catch (Exception e) {
            logger.error("新增精品库附件表出错：",e.getMessage(),e);
            return R.error("系统正在开小差，请联系客服，我们将第一时间为您解决！");
        }
    }



    /**
     * 参数验证
     */
    public String checkParams(Map<String, Object> params){
        Predicate<String> isNotNull = item-> item!=null && !"".equals(item.trim());//是否为空，返回：非空true，空false
        String backMsg = "";
        if(params==null){
            return "参数为空！";
        }
        if(!isNotNull.test(params.get("boutiqueId")+"")){
            return "精品库Id为空！";
        }
        if(!isNotNull.test(params.get("boutiqueSiteDetailId")+"")){
            return "精品库站点信息表Id为空！";
        }
        if(!isNotNull.test(params.get("dataList")+"")){
            return "列表参数信息为空！";
        }
        JSONArray dataList = JSONArray.parseArray(params.get("dataList").toString());
        if(dataList.size()>0) {
            for (int i = 0; i < dataList.size(); i++) {
                JSONObject jsonObj = dataList.getJSONObject(i);
                if(!isNotNull.test(jsonObj.get("fileName")+"")){
                    backMsg = "第"+(i+1)+"行信息，文件名称为空！";
                }
                if(!isNotNull.test(jsonObj.get("filePath")+"")){
                    backMsg = "第"+(i+1)+"行信息，文件上传有误！";
                }
                if(!isNotNull.test(jsonObj.get("fileType")+"")){
                    backMsg = "第"+(i+1)+"行信息，文件类型为空！";
                }
                if(!isNotNull.test(jsonObj.get("fileSize")+"")){
                    backMsg = "第"+(i+1)+"行信息，文件大小为空！";
                }
                if(!isNotNull.test(jsonObj.get("fileSizeUnit")+"")){
                    backMsg = "第"+(i+1)+"行信息，单位为空！";
                }
            }
        }
        return backMsg;
    }


    /**
     * 删除
     */
    @RequestMapping("/del")
    @ResponseBody
    public R del(HttpServletRequest request,@RequestParam("list") List<String> idList){
        try {
            for(int i=0;i<idList.size();i++) {
                //删除
                tpBoutiqueSiteFileService.del(Long.parseLong(idList.get(0)));
            }
            return R.ok();
        } catch (Exception e) {
            logger.error("删除精品库附件出错：",e.getMessage(),e);
            return R.error("系统正在开小差，请联系客服，我们将第一时间为您解决！");
        }
    }


}